#include<stdio.h>

typedef struct _nodo {
	int dato; //dato del nodo.
	struct _nodo* prox; //puntero al siguiente.
} nodo;

typedef struct _lista {
	nodo* primero; //puntero al primer nodo.
} lista;

extern int iesimo(lista l, unsigned int i);
extern unsigned int buscar(lista l, int n);
extern void agregarAd(lista* l, int n);

void pruebaIesimo(lista l, unsigned int i);
void pruebaBuscar(lista l, int n);
void pruebaAgregarAd(lista* ptr_l, int n);
void imprimirLista(lista l);

int main(int argc, char* argv[]) {
	lista l;
	nodo n1;
	nodo n2;
	nodo n3;
	
	l.primero = &n1;
	n1.prox = &n2;
	n2.prox = &n3;
	
	n1.dato = 1;
	n2.dato = 2;
	n3.dato = 3;
	n3.prox = 0;
	
	//pruebaIesimo(l, 1);
	//pruebaBuscar(l, 1);
	//pruebaAgregarAd(&l, 7);
	imprimirLista(l);
	
	return 0;
}

void pruebaIesimo(lista l, unsigned int i) {
	int res = iesimo(l, i);
	
	printf("El iesimo nodo es: %i \n", res);
}

void pruebaBuscar(lista l, int n) {
	unsigned int res = buscar(l, n);
	
	printf("El resultado de buscar: %u \n", res);	
}

void pruebaAgregarAd(lista* ptr_l, int n) {
	agregarAd(ptr_l, n);
}

void imprimirLista(lista l) {
	nodo* res;
	
	printf("Lista: [");
	res = l.primero;
	while (res != 0){
		printf(" %d ,", res->dato);
		res = (nodo*)res->prox;
	}
	printf("] \n");
}
